u`
eLXgсFp.282u\̂ŃC^[tFCXv
Q[JKFL[{[hꂽ𓾂AI Ȃ

p.282 \̂ŃC^[tFCX

ENXƂ܂lɍ\̂ŃC^[tFCXł
E̎\
EApłnewZqŖIɃIuWFNg𐶐邱

p.282 struct05.cs

//p.282 struct05.cs
using System;
interface IMyInterface { //C^[tFCX̒`
    void Show(); //ۃ\bh
    int xprop { get; set; }  //ۃvpeB
}
struct MyStruct : IMyInterface { //C^[tFCX\
    int x;
    public void Show() { //ۃ\bh̎
        Console.WriteLine("x = {0}", x);
    }
    public int xprop { //ۃvpeB̎
        get {
           return x; 
        }
        set {
           x = value; 
        }
    }
}
class struct05 {
    public static void Main() {
        MyStruct msNew = new MyStruct(); //C^[tFCX\̂łnewK{
        msNew.Show(); //ۃ\bh̎Ă
        msNew.xprop = 20; //ۃvpeB̎Ă(set)
        msNew.Show();
    }
}

p.284 \̂\bhɓn

ENXƂ̈Ⴂ͒l^ł邱ƂŁA̍\̂牼̍\֑̂SoRs[
EāANXƓlɎQƓnɂɂref(p.188)w肷Ηǂ

p.284 struct06.cs

//p.284 struct06.cs
using System;
struct MyData { //\̂̒`
    public int x, y;
}
class MyDataClass { //NX̒`
    public int x, y;
}
class ChangeData {
    public void change(ref MyData md) { //\̌^QƓn
        int temp; //Ɨp
        temp = md.x; //l
        md.x = md.y;
        md.y = temp;
    }
    public void change(MyData md) { //\̌^lniI[o[h\j
        int temp; //Ɨp
        temp = md.x; //l
        md.x = md.y;
        md.y = temp; //ïɂ͔fȂ̂ł͖̏Ӗj
    }
    public void change(MyDataClass m) { //NX^Ȃ̂ŎQƓniI[o[hj
        int temp; //Ɨp
        temp = m.x; //l
        m.x = m.y;
        m.y = temp;
    }
}
class struct06 {
    public static void Main() {
        MyData md = new MyData(); //\̃IuWFNg𐶐
        md.x = 10;
        md.y = 20;
        Console.WriteLine("ŏ̏");
        Console.WriteLine("md.x = {0}, md.y = {1}", md.x, md.y);
        ChangeData cd = new ChangeData();
        cd.change(md); //\̌^ln
        Console.WriteLine("cd.change(md)");
        Console.WriteLine("md.x = {0}, md.y = {1}", md.x, md.y); //lnȂ̂ŕςȂ
        cd.change(ref md); //\̌^QƓn
        Console.WriteLine("cd.change(ref md)");
        Console.WriteLine("md.x = {0}, md.y = {1}", md.x, md.y); //QƓnȂ̂ŕς
        MyData m; //\̃IuWFNg𐶐inewj
        m.x = 10;
        m.y = 20;
        Console.WriteLine("ŏ̏");
        Console.WriteLine("m.x = {0}, m.y = {1}", m.x, m.y);
        cd.change(ref m); //\̌^QƓn
        Console.WriteLine("cd.change(ref m)");
        Console.WriteLine("m.x = {0}, m.y = {1}", m.x, m.y); //QƓnȂ̂ŕς
        MyDataClass mdc = new MyDataClass(); //NXIuWFNg𐶐
        mdc.x = 10;
        mdc.y = 20;
        Console.WriteLine("ŏ̏");
        Console.WriteLine("mdc.x = {0}, mdc.y = {1}", mdc.x, mdc.y);
        cd.change(mdc); //NXIuWFNgȂ̂ŎQƓn
        Console.WriteLine("cd.change(mdc)");
        Console.WriteLine("mdc.x = {0}, mdc.y = {1}", mdc.x, mdc.y);  //QƓnȂ̂ŕς
    }
}

p.288 DateTime\̂gĂ݂

Et̏⌻ݎ̎擾Ȃǂɕ֗C#񋟂\̂DateTime
ENbƃ~bint^Œ񋟂vpeB YearAMonthADayAHourAMinuteASecondAMilliSecond
@ C/C++Ƃ͈قȂAN⌎𒲐Kv͂Ȃ
Eɕ֗ȃvpeB܂܂Ă
@EDateTime NowFs_̌ݎDateTimeIuWFNgԂ(ÓIvpeB)
@EDayOfWeek DayOfWeekFjDayOfWeek񋓌^ŕԂB̂܂ܕ\ƉpjɂȂ
@EDateTime DateFt݂̂Ԃib̓[ɂȂj
EToString()\bh̃I[o[ChɂAIuWFNg\ƁuYYYY/MM/DD HH:MM:SSv`̕񂪓
EuYYYY/MM/DDvɂ̂ToShortDateString()\bhB

p.290 datetime01.cs

//p.290 datetime01.cs
using System;
class datetime01 {
    public static void Main(){
        DateTime dt = DateTime.Now;
        Console.WriteLine("{0}N{1}{2}({3})ł",
            dt.Year, dt.Month, dt.Day, dt.DayOfWeek //NAAAj(p)
            );
        Console.WriteLine("{0}{1}{2}b{3}~ZRhł",
            dt.Hour, dt.Minute, dt.Second, dt.Millisecond); //AAbA~b
        Console.WriteLine("dt.Date = {0}", dt.Date); //N݂̂̂ToString()Ŏb̓[ɂȂ
        Console.WriteLine("Zt` = {0}", dt.ToShortDateString()); //N݂̂\
    }
}

AWKFp.290 datetime01.cs

Ej{ɂ悤
Ez string[] dow = {"","","","","","","y"}; pƗǂ

쐬

//AWKFp.290 datetime01.cs
using System;
class datetime01 {
    public static void Main(){
        string[] dow = {"","","","","","","y"}; //yǉz
        DateTime dt = DateTime.Now;
        Console.WriteLine("{0}N{1}{2}({3})ł",
            dt.Year, dt.Month, dt.Day, dow[(int)dt.DayOfWeek] //yύXzNAAAj({)
            );
        Console.WriteLine("{0}{1}{2}b{3}~ZRhł",
            dt.Hour, dt.Minute, dt.Second, dt.Millisecond); //AAbA~b
        Console.WriteLine("dt.Date = {0}", dt.Date); //N݂̂̂ToString()Ŏb̓[ɂȂ
        Console.WriteLine("Zt` = {0}", dt.ToShortDateString()); //N݂̂\
    }
}

eLXgю\Fp.291uclock01.csv

Q[JKFL[{[hꂽ𓾂AI Ȃ

e[}11 L[{[hꂽ𓾂

EC#ł̓L[{[hꂽ𓾂iQAǂ12͌㔼ŊwKCxgp
@ L[{[hꂽCxgp
A ^C}[CxgpăL[{[h̏ԂXL
E͇@pčĂ݂悤
ECxg󂯎ɂ́AɃRXgN^ɂăCxg̓o^s
ESystem.Windows.Forms.ControlNX񋟂KeyDownCxgɁA
@System.Windows.Forms.KeyEventHandlerfQ[g̃CX^Xu+=v邱ƂŁACxgo^
E̎AfQ[g̈ƂăCxgɂȂ\bhw肷B
EF KeyDown += new KeyEventHandler(\bh);
EKeyDownCxgɂȂ\bh́A߂l^voidAobject^ƁAKeyEventArgs^Ƃ
@i\bh͎Rj
EŁAǂ̃L[ĂÃ\bhĂ΂悤ɂȂ

e[}12 tH[AvP[ṼvȌI@

EFormNXClose()\bhĂяoΗǂ

KX L[͂ŏI

EAL[ꂽvOI悤ɂ悤

쐬

//KX L[͂ŏI
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        int mx = backb.Width / 2, my = backb.Height / 2; //W𓾂
        e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //ACe摜𒆉ɕ`
        e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //ACe摜𒆉ɕ`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //yȉǉzL[{[hꂽɌĂ΂郁\bh
        Close(); //tH[AvP[VI
    }
    Program() { //yȉǉzRXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}13 ǂ̃L[ꂽ̂m

EKeyDownpăL[̓Cxgo^ČĂяo悤ɂ\bh́AKeyEventArgs^̈Kv
EKeyEventArgsIuWFNgKeyCodevpeBɂAKeys񋓌^IuWFNgB
@https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.keys
EKeys񋓌^IuWFNgL[̏𕶎œĔrɗpƗǂ
@F e.KeyCode.ToString()

K10 ꂽL[̕\

EOnKeyDown\bh́uClose();vRgAEg
EɁAꂽL[̕MessageBoxŕ\悤
EIɂ̓^XNo[ŉENbNuEBhEv

쐬

//K10 ꂽL[̕\
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        int mx = backb.Width / 2, my = backb.Height / 2; //W𓾂
        e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //ACe摜𒆉ɕ`
        e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //ACe摜𒆉ɕ`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        MessageBox.Show(e.KeyCode.ToString()); //yǉz
        //Close(); //tH[AvP[VI
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

K11 EscL[ꂽI

EOnKeyDown\bhMessageBox폜
EꂽL[̕"Escape"ȂClose()Ɨǂ

쐬

//K11 EscL[ꂽI
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        int mx = backb.Width / 2, my = backb.Height / 2; //W𓾂
        e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //ACe摜𒆉ɕ`
        e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //ACe摜𒆉ɕ`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") {  //yύXz
            Close(); //tH[AvP[VI
        }
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}14 ̕`

Eʏɐ`悷邱Ƃ́AOSɂ`Ȃ̉e󂯂B܂A`ɕKvȏ𓾂Kv̂ŁA
@OnPaint\bh(I[o[Ch)̒ōsKvB
E摜̕`̌ł΁A摜̏ɐ`łB
E`悷ɂ́A`ɗpy𓾂KvB
EySystem.Drawing.PenIuWFNgœB
ESystem.Drawing.PenNX̃RXgN^ɐFƑw肷邱ƂōD݂̐ɂł
@https://learn.microsoft.com/ja-jp/dotnet/api/system.drawing.pen
EF Pen ϐ = new Pen(F, );
EFSystem.Drawing.Color\̂̐ÓIvpeB(p.211)Ŏwł
@FColor.RedAColor.Black 
@https://learn.microsoft.com/ja-jp/dotnet/api/system.drawing.color
@\̂̓eLXg11͂ŐuyʃNXvC/C++̍\̂Ƃ͈قȂ
Efloat^̎Ŏw肷iłOKj
E`悷ɂ́AyAJnWAIWDrawImageƓlDrawLine\bhɓn΂悢
EF e.Graphics.DrawLine(PenIuWFNg, JnXW, JnYW, IXW, IYW)

K12 Ίp`

EʏɍォE֐ԐF10̐`
EʏɉEォ獶։F20̐`

oFK12

Q[JK\F̕`ijA`~̕`A̕`AʑJ Ȃ
